System startup typically involves low-level processes which are invoked upon powering on a device. For example, a central processing unit (CPU) may contain a reset vector which stores a location in which the CPU will look for the first instruction to execute after a reset or after being powered on. The address or location pointed to by the reset vector contains instructions and code to execute low-level processes that eventually result in the loading of an operating system or bare-metal application, for instance. These instructions or “stage-0” boot code, are often referred to as BootROM and typically reside in read-only memory (ROM) of the device. The BootROM perform several functions, such as a power on self test (POST), retrieval of a boot loader program or secondary program loader (SPL), which may be referred to as a first stage boot loader (FSBL), decryption and/or authentication of the FSBL, resetting of the memory (e.g., the random access memory (RAM) of the device), loading the FSBL into memory, initialization of programmable logic, and so forth. The FSBL is then responsible for initializing peripherals, bringing the peripherals online, retrieving and loading into memory an image of the operating system from storage (e.g., from a non-volatile memory), and to perform other tasks.